CREATE TABLE [dbo].[tb_Vacantes]
(
[idVacante] [int] NOT NULL IDENTITY(1, 1),
[Concurso] [int] NULL,
[Localidad] [int] NULL,
[Plaza] [Plaza] NULL,
[PlazaACrear] [int] NULL,
[Estado] [int] NOT NULL,
[AgenteDesignado] [int] NULL,
[SitRevDesignado] [int] NULL,
[CategoriaTituloDesignado] [int] NULL,
[FechaDesignacion] [datetime] NULL CONSTRAINT [DF_tb_Vacantes_FechaDesignacion] DEFAULT (getdate()),
[ResponsableDesignacion] [int] NULL,
[PuntajeDesignacion] [float] NULL,
[OrdenDesignacion] [int] NULL,
[Baja] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[FechaBaja] [datetime] NULL,
[Horario] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Renuncia] [int] NULL
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[CompletarDatosDesignacion] ON [dbo].[tb_Vacantes] 
for  UPDATE
AS
 SET NOCOUNT ON
declare @id int
declare @concurso int
declare @localidad int
declare @plaza int
declare @estado int
declare @agenteDesignado as int
declare @SitRev  int
declare @CatTit int
declare @FechaDesig datetime
declare @Responsable int
declare @Puntaje float
declare @orden int

declare @asignatura int
declare @cargogenerico int 
declare @asignaturagenerica int
declare @CargoSalarial int
declare @Convocatoria int
declare @duenoactual int
declare @msgerror as varchar (100)
 
select @id=idvacante,@concurso=concurso,@localidad=localidad,@plaza=plaza,@estado=estado,@agentedesignado=agentedesignado,@SitRev=SitRevDesignado,
@CatTit=CategoriaTituloDesignado,@FechaDesig=FechaDesignacion,@Responsable=ResponsableDesignacion,@Puntaje=PuntajeDesignacion,@Orden=OrdenDesignacion
 from inserted 

/*SELECT @duenoactual=duenoactual FROM tb_plazas WHERE idplaza=@plaza

IF @duenoactual is not null  BEGIN
	select @msgerror='La plaza seleccionada está ocupada por el AGENTE : ' +nombres from tb_Agentes where idagente=@duenoactual	
	RAISERROR(  @msgerror  , 16,1)
	ROLLBACK
END

*/

select @Asignatura=asignatura , @cargoSalarial=cargosalarialDefault from tb_plazas where idplaza=@plaza --ojo puede ser Funcion en lugar de cargosalarialdefault

select @Cargogenerico = case cargoGenerico when 700 then Asignaturagenerica else Cargogenerico end from tb_traslaciondeCyA where cargo=@cargosalarial
select @AsignaturaGenerica = AsignaturaGenerica  from tb_traslaciondeCyA where Asignatura=@Asignatura

select @convocatoria=Convocatoria from tb_concursos where idconcurso=@concurso
select @Responsable =  ([dbo].[sp_usuario](suser_sname()))

--paCalcularAntiguedadDelAgenteEnDiasxCargo @Convocatoria int,@Cargo int,@Asignatura int,@Res int output
/*
paCalcularAntiguedadDelAgenteEnDiasxCargo @agente,@Convocatoria,@Cargosalarial,@Asignatura ,@Res 


IF(SELECT sum(cantdias) FROM  tb_agentedesignaciones where agente = @agentedesignado) >=120   BEGIN
	RAISERROR('El AGENTE Tiene más de 120 días trabajados en este año.', 16,1)
	ROLLBACK
END

*/

if @Fechadesig is null
     set @Fechadesig=getdate() 
 
if @orden is null select top 1 @orden=nrodeorden  from tb_inscripcionesconvocatorias where convocatoria=@convocatoria and agente=@agenteDesignado and cargogenerico=@cargogenerico and asignaturagenerica=@asignaturagenerica and localidad=@localidad
if @Puntaje is null select top 1 @puntaje=puntaje from tb_inscripcionesconvocatorias where convocatoria=@convocatoria and agente=@agenteDesignado and cargogenerico=@cargogenerico and asignaturagenerica=@asignaturagenerica and localidad=@localidad
if @CatTit is null select top 1 @CatTit=categoriadetitulo from tb_inscripcionesconvocatorias where convocatoria=@convocatoria and agente=@agenteDesignado and cargogenerico=@cargogenerico and asignaturagenerica=@asignaturagenerica and localidad=@localidad


update tb_Vacantes set Fechadesignacion=@Fechadesig,CategoriaTituloDesignado=@CatTit  ,ResponsableDesignacion=@Responsable,PuntajeDesignacion=@puntaje,OrdenDesignacion=@orden where idvacante=@id

GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[ponerLocalidad] ON [dbo].[tb_Vacantes] 
instead of  INSERT 
AS
 SET NOCOUNT ON
declare @id int
declare @localidad int
declare @plaza int
declare @concurso int
declare @estado int
declare @organizacion int
declare @horario varchar(100)

select @id=idvacante,@concurso=concurso,@plaza=plaza,@estado=estado,@localidad=localidad,@horario=horario from inserted 

-- Si la localidad es nula asigno la localidad de la organizacion de la plaza 


if @localidad is null 
     begin
        select @organizacion=organizacion from tb_plazas where idplaza=@plaza
        select @localidad=localidad from tb_organizaciones where idorganizaciones=@organizacion
    end
 
INSERT INTO tb_Vacantes ( [Concurso], [Localidad], [Plaza], [PlazaACrear], [Estado], [AgenteDesignado], [SitRevDesignado], [CategoriaTituloDesignado], [FechaDesignacion], [ResponsableDesignacion], [PuntajeDesignacion], [OrdenDesignacion], [Horario], [Renuncia])
VALUES( @concurso,@localidad, @plaza, null, @estado, null, null,null,null    ,null, null,null,@horario,null)




GO
ALTER TABLE [dbo].[tb_Vacantes] ADD CONSTRAINT [PK_tb_Vacantes] PRIMARY KEY CLUSTERED  ([idVacante]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idx_plaza] ON [dbo].[tb_Vacantes] ([Plaza]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_Agentes] FOREIGN KEY ([AgenteDesignado]) REFERENCES [dbo].[tb_Agentes] ([idAgente])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_CategoriasDeTitulo1] FOREIGN KEY ([CategoriaTituloDesignado]) REFERENCES [dbo].[tb_CategoriasDeTitulo] ([idCategoria])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_Concursos] FOREIGN KEY ([Concurso]) REFERENCES [dbo].[tb_Concursos] ([idConcurso])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_EstadosVacantes1] FOREIGN KEY ([Estado]) REFERENCES [dbo].[tb_EstadosVacantes] ([idEstadoVacante])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_Localidades] FOREIGN KEY ([Localidad]) REFERENCES [dbo].[tb_Localidades] ([idLocalidad])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_Plazas] FOREIGN KEY ([Plaza]) REFERENCES [dbo].[tb_Plazas] ([idPlaza])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_AperturasDeReestructura] FOREIGN KEY ([PlazaACrear]) REFERENCES [dbo].[tb_AperturasDeReestructura] ([idAperturaReestructura])
GO
ALTER TABLE [dbo].[tb_Vacantes] WITH NOCHECK ADD CONSTRAINT [FK_tb_Vacantes_tb_Usuarios] FOREIGN KEY ([ResponsableDesignacion]) REFERENCES [dbo].[tb_Usuarios] ([idUsuario])
GO
ALTER TABLE [dbo].[tb_Vacantes] NOCHECK CONSTRAINT [FK_tb_Vacantes_tb_Concursos]
GO
ALTER TABLE [dbo].[tb_Vacantes] NOCHECK CONSTRAINT [FK_tb_Vacantes_tb_Localidades]
GO
ALTER TABLE [dbo].[tb_Vacantes] NOCHECK CONSTRAINT [FK_tb_Vacantes_tb_Plazas]
GO
